Multicore processor architectures are widely used in modern computing systems. These architectures dominate in many domains, including those with quality of service (QoS) and low latency requirements. A multicore processor architecture includes two or more processing cores, on which two or more software applications may execute in parallel. When two or more applications are executing in parallel on separate cores of a single multicore processor, the applications are said to be co-located on the processor.
The processing cores of the multicore processor often use both private resources and shared resources to perform tasks associated with the executing applications. Private resources are generally replicated across each of the processing cores, for exclusive use by a corresponding individual processing core. Shared resources, by contrast, may generally be used by any of the processing cores of the multicore processor. When two or more applications that are simultaneously executing on separate cores each attempt to use a shared resource, contention for the shared resource can result. Often, contention for shared resources can result in reduced performance, or cross-core application interference, for one or both of the applications competing for the shared resource.